package patterndesign.compositepattern.common;

/**
 * 场景类
 * 只要是树形结构，就要考虑使用组合模式，这个一定要记住，只要是要体现局部和整体
 * 的关系的时候，而且这种关系还可能比较深，考虑一下组合模式吧。
 */
public class Client {
    public static void main(String[] args) {
        //创建一个根节点
        Composite root = new Composite();
        root.doSomething();
        //创建一个树枝构件
        Composite branch = new Composite();
        //创建一个叶子节点
        Leaf leaf = new Leaf();
        //建立整体
        root.add(branch);
        branch.add(leaf);
    }

    //通过递归遍历树
    public static void display(Composite root) {
        for (Component c : root.getChildren()) {
            if (c instanceof Leaf) { //叶子节点
                c.doSomething();
            } else { //树枝节点
                display((Composite) c);
            }
        }
    }
}
